﻿@model SusuCMS.Page
@{
    var controller = ViewContext.Controller as AdminControllerBase;
    var pageType = controller.CmsDataContext.PageTypes.FirstOrDefault(i => i.Id == Model.PageTypeId);
    if (pageType != null)
    {
        foreach (var control in pageType.GetControls())
        {
    <dt>
        <label for="@control.Name">@control.Title</label>
    </dt>
    <dd class="extension" control-type="@control.ControlType">
        @Html.Raw(control.GetHtml())
    </dd>
        }
    }
    @Html.HiddenFor(m => m.ExtensionValue)
}
<script src="@Url.Content("~/Areas/Admin/Scripts/json2.js")" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        // initial extension form
        if ($('#ExtensionValue').val() != '') {
            var values = JSON.parse($('#ExtensionValue').val());
            function getValue(name) {
                for (var i in values) {
                    if (values[i].Name == name) {
                        return values[i].Value;
                    }
                }
                return '';
            }

            $('.extension').each(function () {
                var controlType = $(this).attr('control-type');
                var name = '';
                switch (controlType) {
                    case '1':
                        name = $(this).find('input[type=text]:eq(0)').attr('name');
                        $(this).find('input[type=text]:eq(0)').val(getValue(name));
                        break;
                    case '2':
                        name = $(this).find('textarea:eq(0)').attr('name');
                        $(this).find('textarea:eq(0)').val(getValue(name));
                        break;
                    case '3':
                        name = $(this).find('input[type=radio]:eq(0)').attr('name');
                        var value = getValue(name);
                        $(this).find('input[type=radio]').each(function () {
                            if (value == $(this).val()) {
                                $(this).attr('checked', true)
                            }
                        });
                        break;
                    case '4':
                        name = $(this).find('input[type=checkbox]:eq(0)').attr('name');
                        $(this).find('input[type=checkbox]:checked').attr('checked', false);
                        var splitted = getValue(name).split(',');
                        $(this).find('input[type=checkbox]').each(function () {
                            for (var i in splitted) {
                                if (splitted[i] == $(this).val()) {
                                    $(this).attr('checked', true)
                                }
                            }
                        });
                        break;
                    case '5':
                        name = $(this).find('select:eq(0)').attr('name');
                        $(this).find('select:eq(0)').val(getValue(name));
                        break;
                }
            });
        }

        $('form').not('#PageTypeMoveForm').submit(function () {
            if (!$(this).valid()) {
                return false;
            }

            var list = new Array();
            $('.extension').each(function () {
                var controlType = $(this).attr('control-type');
                var name = '';
                var value = '';
                switch (controlType) {
                    case '1':
                        name = $(this).find('input[type=text]:eq(0)').attr('name');
                        value = $(this).find('input[type=text]:eq(0)').val();
                        break;
                    case '2':
                        name = $(this).find('textarea:eq(0)').attr('name');
                        value = $(this).find('textarea:eq(0)').val();
                        break;
                    case '3':
                        name = $(this).find('input[type=radio]:eq(0)').attr('name');
                        value = $(this).find('input[type=radio]:checked').val();
                        break;
                    case '4':
                        name = $(this).find('input[type=checkbox]:eq(0)').attr('name');
                        $(this).find('input[type=checkbox]:checked').each(function () {
                            value += $(this).val() + ',';
                        });
                        if (value != '') {
                            value = value.substr(0, value.length - 1);
                        }
                        break;
                    case '5':
                        name = $(this).find('select:eq(0)').attr('name');
                        value = $(this).find('select:eq(0)').val();
                        break;
                }
                list.push({ Name: name, Value: value });
            });

            $('#ExtensionValue').val(JSON.stringify(list));
            $('.extension *').attr('disabled', true);
        });
    });</script>
